Шаг 3 - Первая программа

(copyright) Этот раздел я написал по образу и подобию Sun'овского учебника. Так что, кому интересно, может обратиться к первоисточнику.

Как водится, напишем программу, которая называется, как бы вы думали? - конечно же Hello world. Итак, в любом текстовом редакторе, который сохраняет текст as is (как есть), пишем

public class HelloWorldApplication
{
   public static void main(String [] args)
   {
      System.out.println("Hello world!");
   }
}			
и сохраняем этот текст в файле HelloWorldApplication.java. Обратите внимание, что файл должен называться точно так же, как и класс, в нем содержащийся.

СЛЕДСТВИЕ. Так как файл должен называться так же, как и класс, в нем содержащийся, значит в одном файле может содержаться только один класс. Однако внутри этого класса может быть объявлено сколько угодно вложенных классов.

ВНИМАНИЕ. Java-компилятор и интерпретатор регистрозависимые, так что пишите правильно.

Компилируем в байткод: javac HelloWorldApplication.java. Учтите, Java не понимает никаких расширений по умолчанию, никаких изменений регистра в имени файла с текстом программы.

ВНИМАНИЕ. Программа может не компилироваться из-за того, что компилятор не может найти какие-либо классы. В этом случае есть два варианта решения проблемы: первый - объявить переменную окружения (environment variable) CLASSPATH, значением которой должен быть список путей к архивам классов, разделенный точкой с запятой, например, CLASSPATH=.;C:\Java\JDKEE\lib\j2ee.jar;C:\Java\JAXP\xalan.jar; второй вариант (я его больше предпочитаю, и он рекомендован Sun) - указывать пути к архивам классов при компиляции: javac −classpath .;C:\Java\JDKEE\lib\j2ee.jar MyApp.java

ВНИМАНИЕ. Имя архива классов нужно указывать точно, с соблюдением регистра, то есть j2ee.jar ≠ J2EE.JAR.

Архив классов - обычный ZIP-архив. Название свое и расширение эти файлы берут от JAR - Java ARchive. Вы можете просмотреть содержимое любого .JAR-файла с помощью какой-либо ZIP-утилиты.

В результате получаем файл HelloWorldApplication.class. Это и есть байткод, теперь его можно запускать на любой платформе и везде на консоль будет выводиться одно: Hello world!

Запуск

Запускается программа элементарно: java HelloWorldApplication. java - и есть пресловутая java-машина; параметр - байткод, расширение .class подставляется автоматически (байткода с другим расширением быть не может). JVM нельзя заставить автоматически компилировать исходник в байткод.

У вас может возникнуть ошибка: Exception in thread "main" java.lang.noSuchMethodException: main. Проверьте внимательно, класс должен содержать следующее объявление: public static void main(String [] args). У вас может быть только два отклонения от этой строчки: слова public и static можно менять местами и, второе, имя формального параметра может быть любым, не обязательно args.

Еще одна очень распространенная ошибка - Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorldApplication. Это говорит о том, что JVM не нашла файл с байткодом, а ищет она в каталогах и JAR'ах, указанных либо в переменной CLASSPATH, либо в параметре запуска JVM: java −cp . HelloWorldApplication. Точка после слова −cp означает текущий каталог. Слово −cp - сокращение от −classpath, которое можно использовать вместо −cp.

Для "продвинутых"

Если очень интересно, то в следующих шагах можно рассмотреть причины, по которым класс должен иметь точное объявление main. Там же можно вообще рассмотреть способы входа в Java-программы. Пишите - сделаем.

Далее

Первый апплет, два в одном - апплет и консольное приложение, а также исполнения ваших пожеланий.


Автор: Danis Tazeyev.
Hosted by uCoz